﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using QuanLyThuVien.DTO;
using QuanLyThuVien.BLL;
using QuanLyThuVien.Supporter;

namespace QuanLyThuVien.GUI
{
    public partial class GUILoaiDocGia : DevComponents.DotNetBar.Office2007Form
    {
        private BLLLoaiDG _bllLoaiDG;
        private DTOLoaiDG _LoaiDG;
        private THAOTAC _ThaoTac;

        //----------------------------------------------------------------------
        //Desc: constructor mặc định
        //----------------------------------------------------------------------
        public GUILoaiDocGia()
        {
            InitializeComponent();

            KhoiTao();
            _ThaoTac = THAOTAC.XEM;
            _LoaiDG = new DTOLoaiDG();
        }

        //----------------------------------------------------------------------
        //Desc: constructor 1 tham số
        //----------------------------------------------------------------------
        public GUILoaiDocGia(THAOTAC thaotac)
        {
            InitializeComponent();

            KhoiTao();
            _ThaoTac = thaotac;
            _LoaiDG = new DTOLoaiDG();
        }

        //----------------------------------------------------------------------
        //Desc: constructor 2 tham số
        //----------------------------------------------------------------------
        public GUILoaiDocGia(THAOTAC thaotac, DTOLoaiDG loaidg)
        {
            InitializeComponent();

            KhoiTao();
            _ThaoTac = thaotac;
            _LoaiDG = loaidg;
        }

        //----------------------------------------------------------------------
        //Desc: khởi tạo
        //----------------------------------------------------------------------
        public void KhoiTao()
        {
            _bllLoaiDG = new BLLLoaiDG();
        }

        //----------------------------------------------------------------------
        //Desc: cập nhật giao diện
        //----------------------------------------------------------------------
        public void CapNhatGiaoDien()
        {
            switch (_ThaoTac)
            { 
                case THAOTAC.THEM:
                    this.Text = "THÊM LOẠI ĐỘC GIẢ";
                    _btnThemMoi.Visible = true;
                    _btnThem.Visible = true;
                    _btnSua.Visible = false;

                    _txtMaLoaiDG.ReadOnly = false;
                    _txtTenLoaiDG.ReadOnly = false;
                    break;
                case THAOTAC.SUA:
                    this.Text = "CẬP NHẬT LOẠI ĐỘC GIẢ";
                    _btnThemMoi.Visible = true;
                    _btnThem.Visible = false;
                    _btnSua.Visible = true;

                    _txtMaLoaiDG.ReadOnly = true;
                    _txtTenLoaiDG.ReadOnly = false;
                    break;
                case THAOTAC.XEM:
                    this.Text = "THÔNG TIN LOẠI ĐỘC GIẢ";
                    _btnThemMoi.Visible = false;
                    _btnThem.Visible = false;
                    _btnSua.Visible = false;

                    _txtMaLoaiDG.ReadOnly = true;
                    _txtTenLoaiDG.ReadOnly = true;
                    break;
            }
        }

        //----------------------------------------------------------------------
        //Desc: cập nhật nội dung
        //----------------------------------------------------------------------
        public void CapNhatNoiDung()
        {
            switch (_ThaoTac)
            { 
                case THAOTAC.THEM:
                    break;
                default:
                    HienThiThongTinLoaiDG();
                    break;
            }
        }

        //----------------------------------------------------------------------
        //Desc: hiển thị thông tin loại độc giả
        //----------------------------------------------------------------------
        public void HienThiThongTinLoaiDG()
        {
            _txtMaLoaiDG.Text = _LoaiDG.MaLoaiDG;
            _txtTenLoaiDG.Text = _LoaiDG.TenLoaiDG;
        }

        //----------------------------------------------------------------------
        //Desc: xóa các thông tin hiển thị
        //----------------------------------------------------------------------
        public void XoaTatCa()
        {
            _LoaiDG.Reset();
            _txtMaLoaiDG.Text = "";
            _txtTenLoaiDG.Text = "";
        }

        //----------------------------------------------------------------------
        //Desc: lấy dữ liệu
        //----------------------------------------------------------------------
        public DTOLoaiDG LayDuLieuForm()
        {
            if (_txtMaLoaiDG.Text.Length != 1
                ||((_txtMaLoaiDG.Text[0] < 'a' || _txtMaLoaiDG.Text[0] > 'z')
                    && (_txtMaLoaiDG.Text[0] < 'A' || _txtMaLoaiDG.Text[0] > 'Z')))
            {
                MessageBox.Show("Mã loại độc giả chỉ gồm một ký tự không dấu");
                return null;
            }
            if (_txtTenLoaiDG.Text == "")
            {
                MessageBox.Show("Chưa nhập tên loại độc giả");
                return null;
            }

            return new DTOLoaiDG(_txtMaLoaiDG.Text.ToUpper(), _txtTenLoaiDG.Text);
        }

        //----------------------------------------------------------------------
        //Desc: xử lý sự kiện click Thoat
        //----------------------------------------------------------------------
        private void btnThoat_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        //----------------------------------------------------------------------
        //Desc: xử lý sự kiện click ThemMoi
        //----------------------------------------------------------------------
        private void btnThemMoi_Click(object sender, EventArgs e)
        {
            XoaTatCa();
            _ThaoTac = THAOTAC.THEM;
            CapNhatGiaoDien();
            CapNhatNoiDung();
        }

        //----------------------------------------------------------------------
        //Desc: xử lý sự kiện click Them
        //----------------------------------------------------------------------
        private void btnThem_Click(object sender, EventArgs e)
        {
            DTOLoaiDG loaidg = LayDuLieuForm();
            if (loaidg != null)
            {
                if (_bllLoaiDG.KiemTraTonTai(loaidg))
                    MessageBox.Show("Mã loại độc giả đã tồn tại");
                else
                {
                    if (_bllLoaiDG.CapNhat(loaidg))
                    {
                        MessageBox.Show("Thêm thành công");
                        _ThaoTac = THAOTAC.SUA;
                        _LoaiDG = loaidg;
                        CapNhatGiaoDien();
                    }
                    else
                        MessageBox.Show("Thêm thất bại");
                }
            }
        }

        //----------------------------------------------------------------------
        //Desc: xử lý sự kiện click Sua
        //----------------------------------------------------------------------
        private void btnSua_Click(object sender, EventArgs e)
        {
            DTOLoaiDG loaidg = LayDuLieuForm();
            if (loaidg.TenLoaiDG == _LoaiDG.TenLoaiDG)
                MessageBox.Show("Chưa thay đổi tên loại độc giả");
            else
            {
                if (_bllLoaiDG.CapNhat(loaidg))
                {
                    MessageBox.Show("Cập nhật thành công");
                    _LoaiDG = loaidg;
                    CapNhatNoiDung();
                }
                else
                    MessageBox.Show("Cập nhật thất bại");
            }
        }

        //----------------------------------------------------------------------
        //Desc: xử lý sự kiện form load
        //----------------------------------------------------------------------
        private void GUILoaiDocGia_Load(object sender, EventArgs e)
        {
            CapNhatGiaoDien();
            CapNhatNoiDung();
        }

        //----------------------------------------------------------------------
        //Desc: xử lý sự kiện key press
        //----------------------------------------------------------------------
        private void Special_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (Utils.IsSpecialKey(e.KeyChar))
                e.Handled = true;
            else
                e.Handled = false;
        }
    }
}
